package com.winning.core.base.spring.listener;

import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationListener;

import com.winning.core.base.spring.event.ModuleInitEvent;

/**
 * 类名称：AppBaseModuleListener
 * 类描述：继承自Spring事件体系的应用系统基础模块监听器实现类，抽象接口由模块内部具体实现
 * 创建人：liuwensheng
 * 创建时间：2016-12-8 下午2:49:19
 * 修改人：liuwensheng
 * 修改时间：2016-12-8 下午2:49:19
 * 修改备注：
 */
public abstract class AppBaseModule implements ApplicationListener<ModuleInitEvent> {
    protected ApplicationContext applicationContext = null;

    /**
     * 监听模块启动通知事件，初始化应用系统内的模块组件
     *
     * @param ModuleInitEvent 是应用系统自定义事件类型
     */
    @Override
    public void onApplicationEvent(ModuleInitEvent appContentEvent) {
        applicationContext = (ApplicationContext) appContentEvent.getSource();

        //初始化模块接口
        initModuleHandler();
    }

    /**
     * 初始化模块接口，由模块内部具体实现 <br/>
     * 方法名称: initModuleHandler
     *
     * @param
     * @return void  返回类型说明<br/>
     * @throws <br/>
     * @author liuwensheng@winning.com.cn<br/>
     * 创建时间：2016-12-8/下午3:59:05<br/>
     */
    protected abstract void initModuleHandler();

}
